Embodiments of the present invention relate generally to methods and systems for providing high availability processes and more particularly to a high availability enabler for abstracting underlying session technologies.
High availability of a process such as an application supporting a communication session is achieved by replicating the session between nodes of a cluster so that if one node fails or otherwise becomes unavailable, another node can take over support of that session. An example of such replication is the group processing provided by JGroups technology toolkit in JEE middleware. In this and other systems, the session and application level data is replicated on multiple nodes of a cluster using different strategies, e.g., reliable multicast etc, unicast, and different replications (one-to-two, one-to-n, etc.). Upon failure of the node supporting the session detected via different means like hardware failure detection or middleware monitoring (e.g. via heart beat), the session is switched to one of the other nodes on which the session is replicated, e.g., network resources are informed of the failure and switch to the other nodes. Since the session, including the application level data, is replicated on the other node, the session can be rebuilt and resumed on the other node. This is often referred to as service/application availability in that as soon as a failure occurs, the service or application is again available for new transactions, sessions, calls, etc.
Another approach to providing high availability is demonstrated in Oracle Coherence that uses a distributed cache that can replicate sessions in a replica of the cache in a grid computing environment (i.e. set of nodes). Accordingly, the data of the session can be also stored in the cache, distributed by Coherence and replicated by Coherence so that it is where needed for active session and it is provided to another activated session that needs it if the first session is no longer available.
However, existing approaches to providing high availability processes are limited in that they do not factor out or abstract the underlying technologies. That is, applications interacting with, using, and/or relying on such high availability processes are developed specifically for and based one the technology used to provide the replication and/or other high availability functions as well as the protocols supporting each session. As a result, the existing solutions are either limited to use with only one network protocol and/or technology or difficult to expand to allow integration with other capabilities. Hence, there is a need for improved methods and systems for interacting with high availability sessions.